﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using DECOR.BL.BE;
using DECOR.BL.BC;
using System.Collections.Specialized;
using System.Web.Script.Serialization;
using System.Collections.Generic;
using System.Reflection;

namespace DECOR.Touchapp
{
    public partial class crearDocumento : System.Web.UI.Page
    {
        string pRetval = "", pTipoDoc = "";
        string oficina = "";
        string grpVendVal = "";
        string CodVendedor1 = "";
        string NomVendedor1 = "";
        string FechaFact = "";
        string FechaValidez = "";

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Request.HttpMethod.Equals("POST"))
            {
                
            }
            else
            {
                //NameValueCollection param = new NameValueCollection();
                //param.Add("Id", Session.SessionID);
                //param.Add("UserId", "VENDEDORLM");
                //param.Add("PwdId", "DECORCENTER");
                CredencialesController.cargarInfo(Request.Params); //(SIEMPRE)
                grpVendVal = Request.Params["GrpVend"];
                CodVendedor1 = Request.Params["CodigoVendedor"];
                NomVendedor1 = Request.Params["Descripcion"];
                pTipoDoc = Request.Params["tipoDocumento"];

                CrearPedido();

                Response.ContentType = "application/json; charset=UTF-8";
                Response.Write(pRetval);
            }
        }

        private void CrearPedido()
        {
            try
            {
                pRetval = "{\"success\": {0}, \"errors\":{\"reason\": \"{1}\"}, \"op\":\"{2}\", ";
                pRetval += "\"FechaValidez\":\"{3}\", \"oficina\":\"{4}\", \"grpVendVal\":\"{5}\", ";
                pRetval += "\"CodVendedor1\":\"{6}\", \"NomVendedor1\":\"{7}\", \"FechaFact\":\"{8}\", ";
                pRetval += "\"tipoCambio\": {9} ";
                pRetval += "}";

                string cod = ParametroBC.Instance.getParamValue("CodPedInst");
                if (pTipoDoc.Equals(cod))
                {
                    //popUpGenerarServicio = "true";
                    //pRetval = pRetval.Replace("{3}", popUpGenerarServicio);
                }
                else
                {
                    if (ParametroBC.Instance.esTipoX(pTipoDoc, "CodConRef"))
                    {
                        EnviaErrores("El tipo de pedido seleccionado debe ser creado con referencia a otro documento.");
                        Response.ContentType = "application/json; charset=UTF-8";
                        Response.Write(pRetval);
                        //return;
                    }
                    
                    pRetval = pRetval.Replace("{0}", "true");
                    pRetval = pRetval.Replace("{1}", "");
                    pRetval = pRetval.Replace("{2}", "crear");
                    
                    this.calculaFechaValidez();
                    pRetval = pRetval.Replace("{3}", FechaValidez);
                    Session["Operacion"] = "crear";
                    this.cargaDatosUsuario();
                    pRetval = pRetval.Replace("{4}", oficina);
                    pRetval = pRetval.Replace("{5}", grpVendVal);
                    pRetval = pRetval.Replace("{6}", CodVendedor1);
                    pRetval = pRetval.Replace("{7}", NomVendedor1);
                    FechaFact = DateTime.Now.ToShortDateString();
                    pRetval = pRetval.Replace("{8}", FechaFact);
                    string tipoCambio = ParametroBC.Instance.getTipoCambio().ToString();
                    pRetval = pRetval.Replace("{9}", tipoCambio);

                    if (ParametroBC.Instance.esTipoX(pTipoDoc, "CodPedDatServ"))
                    {
                        this.bloquearCliente("true");
                    }
                    else
                    {
                        
                    }

                    if (ParametroBC.Instance.esTipoX(pTipoDoc, "DocsTextosVisitas"))
                    {
                        if (pTipoDoc.Equals("Z036"))
                        {
                            
                        }
                        else if (pTipoDoc.Equals("Z037"))
                        {
                            
                        }
                    }
                    else
                    {
                        
                    }
                }
            }
            catch (Exception ex)
            {
                EnviaErrores(ex.Message);
                
            }
        }

        private void calculaFechaValidez()
        {
            if (pTipoDoc.Equals(ParametroBC.Instance.getParamValue("CodReserva")))
            {
                double dias = Convert.ToDouble(ParametroBC.Instance.getParamValue("ValidezReserva"));
                FechaValidez = DateTime.Today.AddDays(dias).ToString("dd/MM/yyyy");

            }
            if (ParametroBC.Instance.esTipoOferta(pTipoDoc))
            {
                double dias = Convert.ToDouble(ParametroBC.Instance.getParamValue("ValidezOferta"));
                FechaValidez = DateTime.Today.AddDays(dias).ToString("dd/MM/yyyy");
            }
        }

        private void EnviaErrores(string mensaje)
        {
            pRetval = pRetval.Replace("{0}", "false");
            pRetval = pRetval.Replace("{1}", mensaje);
        }

        private void cargaDatosUsuario()
        {
            if (Session["UsuarioWeb"] != null)
            {
                UsuarioWebBE objUsuarioWeb = (UsuarioWebBE)Session["UsuarioWeb"];
                PersonaBE objPersonaWeb = (PersonaBE)Session["PersonaWeb"];
                
                if (!string.IsNullOrEmpty(objUsuarioWeb.OfVentas))
                {
                    oficina = ""; // objUsuarioWeb.OfVentas;
                }
                if (!string.IsNullOrEmpty(objUsuarioWeb.GrpVend))
                {
                    grpVendVal = grpVendVal; // objUsuarioWeb.GrpVend;
                }

                CodVendedor1 = CodVendedor1; // objPersonaWeb.CodPersona;
                NomVendedor1 = NomVendedor1; // objPersonaWeb.Descripcion;
            }
        }

        private void bloquearCliente(string param)
        {
            //txtCodigoCliente = param;
            //txtNombreCliente = param;
            //txtCodigoSolicitante = param;
            //txtNombreSolicitante = param;
            //txtDireccionSolicitante = param;
            //ddlCodigoSolicitante = (param == "false" ? "true" : param);
            //txtTelefonoSolicitante = param;
            //txtNifSolicitante = param;
        }
    }
}
